/***************************** Ccay IGrid MiniToolBar *************************************/
(function(IGrid) {
	var miniToolBar = {
		build: function (grid, op) {
			var toolBarOp = {
					css: "ccay-igrid-minitoolbar igrid-minitoolbar",
					hasItemDiv: false,
					items: []
				};
			// 执行所有的工具栏插件
			Ccay.UI.XControl[grid.type].fn.plugin.fireAll("miniToolBar", grid, op, toolBarOp.items);
			// 若存在图标按钮，则生成工具栏
			if (toolBarOp.items.length > 0) {
				// 若自定义的工具栏不存在，则创建浮动工具栏；否则，在自定义工具后追加图标按钮
				if (!op.toolPanel) {
					// 初始化工具栏
					$.create("div").ccayToolbar(toolBarOp).appendTo(grid.getContent());
					// 绑定鼠标移入、移除事件
					miniToolBar.mouseInOut(grid, op);
				} else {
					var toolPanel = $(op.toolPanel);
					// 判断工具栏是否存在，存在，则不在创建
					if (!toolPanel.children(".igrid-minitoolbar").length) {
						toolBarOp.css = "igrid-minitoolbar";
						// float引起的元素塌陷，需在元素后面加上一个div class=clear
						$.create("div").css("float", "right").ccayToolbar(toolBarOp).after("<div class='clear'></div>").appendTo(toolPanel);
					}
				}
				
			}
		},
		mouseInOut: function (grid, op) {
			var timeoutShow, timeoutHide,
				fnShow = function(grid, target){
					return setTimeout(function () {
//						Ccay.Core.log("doShow");
						grid.showToolBar();
						timeoutShow = null;
					}, 300);
				},
				fnHide = function(grid, target){
					return setTimeout(function () {
//						Ccay.Core.log("doHide");
						grid.hideToolBar();
						timeoutHide = null;
					}, 5000);
				};
			grid.getContent().bind("mouseover", function (e) {
//				Ccay.Core.log("over:" + timeoutShow + "----" + timeoutHide);
				if (timeoutHide) {
					clearTimeout(timeoutHide);
					timeoutHide = null;
				}
//				Ccay.Core.log("show:" + op._showTool);
				if (!op._showTool) {
					timeoutShow || (timeoutShow = fnShow(grid, $(this)));
				}
			}).bind("mouseleave", function (e) {
//				Ccay.Core.log("leave:" + timeoutHide + "----" + timeoutShow);
				if (timeoutShow) {
					clearTimeout(timeoutShow);
					timeoutShow = null;
				}
//				Ccay.Core.log("hide:" + !op._showTool);
				if (op._showTool) {
					timeoutHide || (timeoutHide = fnHide(grid, $(this)));
				}
				
			});
		}
	};
	

	/** 注册个性化设置插件 */
	Ccay.UI.XControl.addPlugin("XGrid", "miniToolBar", {
				build : function(grid, op) {
					// 个性化接口实现
					op.handler.complete.add(miniToolBar.build);
				},
				clear: function (grid, op) {
					delete op._showTool;
					if (op.toolPanel) {
						var minitoolbar = $(op.toolPanel).children(".igrid-minitoolbar");
						minitoolbar.next().remove();
						minitoolbar.remove();
					}
				}
			});
			
	/** manager扩展 */
	Ccay.UI.XControl.extendIManager("XGrid", {
		showToolBar: function () {
			var op = this.op;
			if (!op.toolPanel) {
				var gridContent = this.getContent(),
					toolBarPanel = this.getMiniToolBar(),
					// 若igrid的位置在顶端时，工具栏位置也在顶端
					toolBarTop = 0 - toolBarPanel.outerHeight() - 5,
					fullPanel = op.fullPanel && $(op.fullPanel);
				// 判断全屏模式下，只有igrid一个组件是，设置个性化显示位置
				if (fullPanel && fullPanel.hasClass("ccay-fullscreen-full") && !this.dom.prev().length) {
					toolBarTop = 0;
				}
				// 判断工具栏的宽度，若工具栏不存在图标是，则不显示
				if (toolBarPanel.width() > 10) {
					// 设置工具栏显示位置
					toolBarPanel.css({top: toolBarTop, right: 0}).fadeIn(100);
					op._showTool = true;
				}
			}
		},
		hideToolBar: function () {
			if (!this.op.toolPanel) {
				this.getMiniToolBar().fadeOut(500);
				this.op._showTool = false;
			}
		}
	});
})(Ccay.UI.IGrid);